/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.ugc.cnel.manabi.bakenbeans;

import org.ugc.cnel.manabi.conf.paginas;
import com.icesoft.faces.component.ext.HtmlInputSecret;
import com.icesoft.faces.component.ext.HtmlInputText;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.apache.commons.lang.StringUtils;
import org.ugc.cnel.manabi.entidades.Usuario;
import org.ugc.cnel.manabi.jpa.UsuarioJpaController;
import org.ugc.cnel.manabi.recursos.Utilidades;

/**
 *
 * @author Admin
 */
public class accesoBakenBean {

    private String cedula;
    private String clave;
    private HtmlInputText txt_usuario = null;
    private HtmlInputSecret txt_clave = null;
    private boolean popupmodal = false;
    private String texto;
    private final UsuarioJpaController usuariojpa;

    public String getTexto() {
        return texto;
    }

    public void setTexto(String texto) {
        this.texto = texto;
    }

    public boolean isPopupmodal() {
        return popupmodal;
    }

    public void setPopupmodal(boolean popupmodal) {
        this.popupmodal = popupmodal;
    }

    public HtmlInputSecret getTxt_clave() {
        return txt_clave;
    }

    public void setTxt_clave(HtmlInputSecret txt_clave) {
        this.txt_clave = txt_clave;
    }

    public HtmlInputText getTxt_usuario() {
        return txt_usuario;
    }

    public void setTxt_usuario(HtmlInputText txt_usuario) {
        this.txt_usuario = txt_usuario;
    }

    public String getCedula() {
        return cedula;
    }

    public void setCedula(String cedula) {
        this.cedula = cedula;
    }

    public String getClave() {
        return clave;
    }

    public void setClave(String clave) {
        this.clave = clave;
    }

    /** Creates a new instance of accesoBakenBean */
    public accesoBakenBean() {
        // Invalidar Sessiones
        /*FacesContext context = FacesContext.getCurrentInstance();
        ExternalContext ec = context.getExternalContext();
        HttpServletRequest request = (HttpServletRequest) ec.getRequest();
        request.getSession(false).invalidate();*/
        // Iniciar Conytralador
        //this.usuariojpa = new UsuarioJpaController();
        FacesContext facesContext = FacesContext.getCurrentInstance();
        usuariojpa = (UsuarioJpaController) facesContext.getApplication().getELResolver().getValue(facesContext.getELContext(), null, "UsuarioJPA");
        //facesContext.getApplication().getELResolver().getValue(facesContext.getELContext(), null, "SessionBean");
        //usuariojpa =new UsuarioJpaController();

    }

    /** register method to validate the registered name
     *@param ActionEvent event
     */
    public String valida(ActionEvent event) {
        setCedula(cedula);
        FacesContext context = FacesContext.getCurrentInstance();
        if (StringUtils.isEmpty(getCedula())) {
            FacesMessage message = new FacesMessage();
            message.setSeverity(FacesMessage.SEVERITY_ERROR);
            message.setSummary("Cedula campo vacio");
            message.setDetail("Cedula campo vacio..");
            context.addMessage("form_acceso:txt_usuario", message);
            this.txt_usuario.requestFocus();
            return "error";
        }
        if (StringUtils.isEmpty(getClave())) {
            FacesMessage message = new FacesMessage();
            message.setSeverity(FacesMessage.SEVERITY_ERROR);
            message.setSummary("Campo Clave");
            message.setDetail("Campo Clave vacio..");
            context.addMessage("form_acceso:txt_clave", message);
            this.txt_clave.requestFocus();
            return "error";
        }
        Usuario usu = null;
        try {
            usu = this.usuariojpa.findUsuario(getCedula());
        } catch (Exception ex) {
            Logger.getLogger(accesoBakenBean.class.getName()).log(Level.INFO, null, ex);
            setPopupmodal(true);
            setTexto("Usuario no existe");
            return "error";
        }
        if (usu == null) {
            setPopupmodal(true);
            setTexto("Usuario o Clave Incorrecta...");
            return "error";
        }
        if (!usu.getClave().equals(Utilidades.md5(getClave()))) {
            setPopupmodal(true);
            setTexto("Usuario o Clave Incorrecta...");
            return "error";
        }
        try {
            // Agregar la Variable de session del usuario logeado
            context.getExternalContext().getSessionMap().put("usu_login", usu);
            //No auditar el acceso se llena la tabla con datos 
            //AuditBakenBean.audit(AuditBakenBean.tipomensaje.ACCESAR, "El usuario Ingreso al sistema");
            // Enviar a la Pagina del Sistema
            context.getExternalContext().redirect(paginas.pagina_sistema);
        } catch (IOException ex) {
            Logger.getLogger(accesoBakenBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        return "success";
    }

    public void cierracierrapopup(ActionEvent evt) {
        setPopupmodal(false);
        this.getTxt_usuario().requestFocus();
    }

    public void abrepopup(ActionEvent evt) {
        setPopupmodal(true);
    }
}
